﻿using System;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using BuySoftwareOnline.Domain.Entities;
using System.Collections.Generic;
using BuySoftwareOnline.Domain.Concrete;


namespace BuySoftwareOnline.Domain
{
    partial class BuySoftwareOnlineDataContext
    {
    }

    public class SupplierMetaData
    {
        public int SupplierID { get; set; }

        [Required]
        [AllowHtml]
        public string SupplierName { get; set; }

        [AllowHtml]
        public string SupplierAddress { get; set; }
    }

    public class ReceiptMetaData
    {
        public int ReceiptID { get; set; }

        public bool ReceiptType { get; set; }

        public DateTime ReceiptDate { get; set; }

        public decimal TotalPrice { get; set; }

        public int EmployeerID { get; set; }

        public int OrderID { get; set; }
    }

    public class VersionMetaData
    {
        public int VersionID { get; set; }

        [Required]
        public string VersionType { get; set; }
    }

    public class OrderMetaData
    {
        public int OrderID { get; set; }
        
        [Required]
        [AllowHtml]
        public string NameReceiver { get; set; }

        [Required]
        [AllowHtml]
        public string AddressOrder { get; set; }

        [Required]
        public string PhoneReceiver { get; set; }

        [Required]
        [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}")]
        public string MailReceiver { get; set; }

        public byte State { get; set; }

        public DateTime OrderDate { get; set; }

        public DateTime ShipDate { get; set; }

        public int CustomerID { get; set; }
    }

    public class EmployeerMetaData
    {
        public int EmployeerID { get; set; }

        [Required]
        public string Account { get; set; }

        [Required]
        public string Password { get; set; }

        [Required]
        [AllowHtml]
        public string EmployeerName { get; set; }

        [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}")]
        public string EmployeerMail { get; set; }

        public string Phone { get; set; }

        public DateTime Birthday { get; set; }

        [AllowHtml]
        public string Address { get; set; }

        public bool IsLogin { get; set; }

        public DateTime UpdateTime { get; set; }

        public DateTime UpdateLogin { get; set; }

        public int RuleID { get; set; }
    }

    public class CustomerMetaData
    {
        [HiddenInput]
        public int CustomerID { get; set; }

        [Required(ErrorMessage = "Tên tài khoản không được trống")]
        [Display(Name = "Tài khoản")]
        [StringLength(100, MinimumLength = 10, ErrorMessage = "Tên tài khoản không dưới 10 ký tự")]
        public string Account { get; set; }

        [Required(ErrorMessage="Mật khẩu không được trống")]
        [Display(Name="Mật khẩu")]
        [StringLength(30,MinimumLength=10,ErrorMessage="Mật khẩu không dưới 10 ký tự và hơn 30 ký tự")]
        [DataType(DataType.Password)]
        public string Password { get; set; }

        [Required(ErrorMessage = "Mật khẩu xác nhận không được trống")]
        [Display(Name = "Xác nhận mật khẩu")]
        [Compare("Password",ErrorMessage="Mật khẩu xác nhận không trùng khớp")]
        [DataType(DataType.Password)]
        public string Repassword { get; set; }

        [Required(ErrorMessage="Họ tên không được trống")]
        [AllowHtml]
        [Display(Name="Họ và tên")]
        public string CustomerName { get; set; }

        [Required(ErrorMessage="Mail không được để trống")]
        [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}",ErrorMessage="Mail không hợp lệ")]
        [Display(Name="Mail")]
        public string CustomerMail { get; set; }

        [Display(Name="Số điện thoại")]
        public string Phone { get; set; }

        [Display(Name="Ngày sinh")]
        public DateTime Birthday { get; set; }

        [AllowHtml]
        [Display(Name="Địa chỉ")]
        public string Address { get; set; }

        [Required(ErrorMessage="Vui lòng điền câu hỏi bí mật")]
        [AllowHtml]
        [Display(Name="Câu hỏi bí mật")]
        public string SecretQuestion { get; set; }

        [Required(ErrorMessage="Câu trả lời không được để trống")]
        [AllowHtml]
        [Display(Name = "Trả lời")]
        public string Answer { get; set; }

        [ScaffoldColumn(false)]
        public bool IsLogin { get; set; }

        [ScaffoldColumn(false)]
        public DateTime UpdateTime { get; set; }

        [ScaffoldColumn(false)]
        public DateTime UpdateLogin { get; set; }
    }

    public class AdvertiseMetaData
    {
        public int AdvertiseID { get; set; }

        [Required]
        [AllowHtml]
        public string CompanyDescription { get; set; }

        public int EmployeerID { get; set; }
    }

    public class CategoryMetaData
    {
        public int CategoryID { get; set; }

        [Required]
        [AllowHtml]
        public string CategoryName { get; set; }

    }

    public class ProductMetaData
    {
        [Required]
        public string ProductID { get; set; }

        [Required]
        [AllowHtml]
        public string ProductName { get; set; }

        [Required]
        [AllowHtml]
        public string Description { get; set; }

        [Required]
        [AllowHtml]
        public string Content { get; set; }

        [Required]
        public string Requirement { get; set; }

        [Required]
        [Range(typeof(double), "0.00", "100000.00")]
        public double Size { get; set; }

        [Required]
        public string PlatForm { get; set; }

        [Required]
        [Range(typeof(decimal),"0.00","10000.00")]
        public decimal UnitPrice { get; set; }

        public int Total { get; set; }

        public bool IsView { get; set; }

        public DateTime CreateTime { get; set; }

        [Required]
        public int CategoryID { get; set; }

        [Required]
        public int SupplierID { get; set; }
    }

    [MetadataType(typeof(VersionMetaData))]
    partial class Version
    {
    }

    partial class ProductBuild
    {
    }

    [MetadataType(typeof(OrderMetaData))]
    partial class Order
    {
    }
    
    [MetadataType(typeof(CustomerMetaData))]
    partial class Customer
    {
    }

    partial class Rule
    {
    }

    [MetadataType(typeof(AdvertiseMetaData))]
    partial class Advertise
    {
    }

    [MetadataType(typeof(EmployeerMetaData))]
    partial class Employeer
    {
    }

    [MetadataType(typeof(ReceiptMetaData))]
    partial class Receipt
    {
    }

    [MetadataType(typeof(SupplierMetaData))]
    partial class Supplier
    {
    }

    [MetadataType(typeof(ProductMetaData))]
    partial class Product
    {
    }

    [MetadataType(typeof(CategoryMetaData))]
    partial class Category
    {
    }
}

